package com.zt.dev.standardManage.utils;


import freemarker.template.Configuration;
import freemarker.template.Template;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.Map;

/**
 * 导出word
 */
public class FreeMarkerUtil {

    /**
     * 生成word文件
     *
     * @param dataMap      word中需要展示的动态数据，用map集合来保存
     * @param templateName word模板名称，例如：test.ftl
     * @param fileName     生成的文件名称，例如：test.doc
     */
    public static  File createWord(Map dataMap, String templateName, String fileName) {

        // 创建配置实例
        Configuration configuration = new Configuration();
        // 设置编码
        configuration.setDefaultEncoding("UTF-8");
        // 获取ftl模板文件路径
        configuration.setClassForTemplateLoading(FreeMarkerUtil.class, "/");
        // 获取模板
        Template template = null;
        // 输出文件
        File outFile = new File(fileName);
        try {
            template = configuration.getTemplate(templateName);
            // 将模板和数据模型合并生成文件
            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
            // 生成文件
            template.process(dataMap, out);
            // 关闭流
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return outFile;
    }
}
